﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SGT_ON;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;
//LineaDeTiempo: Fecha inicio -  fin , poner la hora
//        Ordenar: Chaperia - Pintura
public partial class LineaDeTiempo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //verifico que la linea de tiempo existe si no, la creo.
            int _presupuestoId;
            if(int.TryParse(Request.QueryString["ID"], out _presupuestoId) == false)
                Response.Redirect("PresupuestoListado.aspx");
            ONLineaDeTiempo _lt = ONLineaDeTiempo.ObtenerPorPresupuestoID(_presupuestoId);
            if ((_lt == null)
                || (_lt.ID < 0))
                _lt = ONLineaDeTiempo.CrearLineaDeTiempoParaPresupuesto(_presupuestoId);

        }
    }
    protected void FormView2_PageIndexChanging(object sender, FormViewPageEventArgs e)
    {
    }
    /// <summary>
    /// Agrega el elemento [No asignado] a yb ASPXComboBox
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public void DropDownListAgregarNoAsignado_DataBound(object sender, EventArgs e)
    {
        //le agrego el elemento -1
        ((ASPxComboBox)sender).Items.Insert(0, new ListEditItem("[No asignado]", int.Parse("-1")));
    }
    protected void gvTareasLineaDeTiempo_CustomButtonCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewCustomButtonCallbackEventArgs e)
    {
        if (e.ButtonID == "Subir")
        {
            int _TareaLineaDeTiempoId = (int)gvTareasLineaDeTiempo.GetRowValues(e.VisibleIndex, "ID");
            ONTareaLineaDeTiempo.CambiarOrdenDeTarea(_TareaLineaDeTiempoId, ONTareaLineaDeTiempo.OrdenAccion.Subir);
            gvTareasLineaDeTiempo.DataBind();
        }
        else if (e.ButtonID == "Bajar")
        {
            int _TareaLineaDeTiempoId = (int)gvTareasLineaDeTiempo.GetRowValues(e.VisibleIndex, "ID");
            ONTareaLineaDeTiempo.CambiarOrdenDeTarea(_TareaLineaDeTiempoId, ONTareaLineaDeTiempo.OrdenAccion.Bajar);
            gvTareasLineaDeTiempo.DataBind();
        }

        //copiedValues = new Hashtable();
        //foreach (string fieldName in copiedFields)
        //{
        //    copiedValues[fieldName] = grid.GetRowValues(e.VisibleIndex, fieldName);
        //}
        //grid.AddNewRow();
    }
    protected void dsTareasLineaDetiempo_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
    {
        ONTareaLineaDeTiempo _tareaLT = (ONTareaLineaDeTiempo)e.InputParameters[0];
        int _PresupuestoId;
        if (int.TryParse(Request.QueryString["ID"], out _PresupuestoId) == false)
            return;
        int _lineaDeTiempoId = ONLineaDeTiempo.ObtenerPorPresupuestoID(_PresupuestoId).ID;
        
        _tareaLT.Orden = ONTareaLineaDeTiempo.ObtenerOrdenMenor(_lineaDeTiempoId) - 1;
        _tareaLT.LineaDeTiempoId = _lineaDeTiempoId;
    }
    protected void gvTareasLineaDeTiempo_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
    {
        //generar las validaciones ver:
        // http://demos.devexpress.com/ASPxGridViewDemos/GridEditing/Validation.aspx
    }
    protected void gvTareasLineaDeTiempo_ParseValue(object sender, DevExpress.Web.Data.ASPxParseValueEventArgs e)
    {
        if ((e.FieldName == "LineaDeTiempoId")
            && (e.Value.ToString() == ""))
            e.Value = "-1";
        if ((e.FieldName == "EmpleadoIdResponsable")
            && (e.Value == null))
            e.Value = "-1";
        else if ((e.FieldName == "Orden")
                    && (e.Value.ToString() == ""))
            e.Value = "-1";
        else if ((e.FieldName == "TiempoEstimadoHoras")
                    && (e.Value.ToString() == ""))
            e.Value = "0";
        else if ((e.FieldName == "Nombre")
                    && (e.Value.ToString() == ""))
            throw new ArgumentException("Debe ingresar un nombre");
        else if ((e.FieldName == "Estado")
                    && ((e.Value == null) || (e.Value.ToString() == "")))
            throw new ArgumentException("Debe seleccionar un estado.");
        else if ((e.FieldName == "SectorId")
                    && ((e.Value == null) || (e.Value.ToString() == "-1")))
            throw new ArgumentException("Debe seleccionar un sector.");

    }
    protected void gvInterrupciones_BeforePerformDataSelect(object sender, EventArgs e)
    {
        Session["TareaLineaDeTiempoId"] = (sender as ASPxGridView).GetMasterRowKeyValue();
    }
    protected void gvInterrupciones_CustomUnboundColumnData(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDataEventArgs e)
    {
        
    }
}
